/*
 * Created by Sam Sune on 2020/10/23.
 *
 * Copyright (c) 2020 belonk.com All rights reserved.
 */

/*
9.6头文件的注意事项和细节说明
1)引用头文件相当于复制头文件的内容

2)源文件的名字 可以不和头文件一样，但是为了好管理，一般头文件名和源文件名一样.
3)C 语言中 include <> 与 include ""  的区别

include <>：引用的是编译器的类库路径里面的头文件，用于引用系统头文件。
include ""：引用的是你程序目录的相对路径中的头文件，如果在程序目录没有找到引用的头文件则到编译器的类库路径的目录下找该头文件，用于引用用户头文件。
所以：
*引用 系统头文件，两种形式都会可以，include <> 效率高
*引用 用户头文件，只能使用 include ""
4)一个 #include 命令只能包含一个头文件，多个头文件需要多个 #include 命令

5)同一个头文件如果被多次引入，多次引入的效果和一次引入的效果相同，因为头文件在代码层面有防止重复引入的机制 [举例]

6)在一个被包含的文件(.c)中又可以包含另一个文件头文件(.h)

7)不管是标准头文件，还是自定义头文件，都只能包含变量和函数的声明，不能包含定义，否则在多次引入时会引起重复定义错误(!!!!)
 */

// <>方式引入和""引入头文件的区别：
// <> 方式只能从系统库位置引入系统头文件，而""会先从程序相对目录引入，找不到在从系统库文职引入
// 如果是引入系统库，<>效率更高，""虽然也能引入系统库，不过会查找范围更大
#include <stdio.h>
// 引入自定义头文件
#include "myCalc.h"

// 实现头文件中定义的函数
// 头文件.h和对应的.c文件名可以不同，但是相同的文件名更易于识别和维护
double calc(int x, int y, char oper) {
    //定义一个变量 res ,保存运算的结果
    double res = 0.0;
    switch (oper) {
        case '+' :
            res = x + y;
            break;
        case '-':
            res = x - y;
            break;
        case '*':
            res = x * y;
            break;
        case '/':
            res = x / y;
            break;
        case '%':
            res = x % y;
            break;
        default :
            printf("你的运算符有误~");
    }
    return res;
}

int main() {
    printf("\n 10 + 4 = %.2f", calc(10, 4, '+'));
    printf("\n 10 - 4 = %.2f", calc(10, 4, '-'));
    printf("\n 10 * 4 = %.2f", calc(10, 4, '*'));
    printf("\n 10 / 4 = %.2f", calc(10, 4, '/'));
    printf("\n 10 %% 4 = %.2f", calc(10, 4, '%'));
}